// standard => 标准,higher => 较高, exhigh=>极高, lossless=>无损, hires=>Hi-Res

export interface SongLevel {
  standard: number;
  higher: number;
  exhigh: number;
  lossless: number;

  hires: number;
}

export type LevelType = keyof SongLevel;

export interface FreeTrialPrivilege {
  resConsumable: boolean;
  userConsumable: boolean;
  listenType?: any;
}

export interface FreeTimeTrialPrivilege {
  resConsumable: boolean;
  userConsumable: boolean;
  type: number;
  remainTime: number;
}

export interface SongUrlData {
  id: number;
  url: string;
  br: number;
  size: number;
  md5: string;
  code: number;
  expi: number;
  type: string;
  gain: number;
  peak: number;
  fee: number;
  uf?: any;
  payed: number;
  flag: number;
  canExtend: boolean;
  freeTrialInfo?: any;
  level: string;
  encodeType: string;
  freeTrialPrivilege: FreeTrialPrivilege;
  freeTimeTrialPrivilege: FreeTimeTrialPrivilege;
  urlSource: number;
  rightSource: number;
  podcastCtrp?: any;
  effectTypes?: any;
  time: number;
}

export type LyricDataType = {
  klyric?: {
    version: number;
    lyric: string;
  };
  lrc?: {
    version: number;
    lyric: string;
  };
  romalrc?: {
    version: number;
    lyric: string;
  };
  tlyric?: {
    version: number;
    lyric: string;
  };
  lyricUser?: {
    demand: number;
    id: number;
    nickname: string;
    status: number;
    uptime: number;
    userid: number;
  };
  transUser?: {
    demand: number;
    id: number;
    nickname: string;
    status: number;
    uptime: number;
    userid: number;
  };
};

export type LyricDataRes = LyricDataType & {
  code: 200;
};
